<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Organizacion_lst( $this );

	class Organizacion_lst extends Lst
	{
	function Organizacion_lst( &$oModule )
		{
			$this->Lst ( $oModule );
			if ( getParam( PARAM_KEYLOOKUP ) ) $this->aFields['cKeyLookUp'] = getParam( PARAM_KEYLOOKUP );
		}
	function setLevel()
		{
			switch ( $this->getOptionView() )
			{
				case 'E':
					$this->aShowColumns = array( 'Organizacion', 'Web' );
					break;
				case 'L':
					$this->aShowColumns = array( 'bEstrella', 'ncRotulo', 'Organizacion', 'Web' );
					break;
			}
		}
	function initialize()
		{
			$this->oFiltro = $this->oModule->loadClass( 'Organizacion_frm' );
			$this->aFields = array_merge ( (array)$this->aFields,  (array)$this->oFiltro->getFieldArray() );
			
			// Obtiene de su filtro los parametros que necesita para armar el query
			$this->aFields['aRotulo'] = is_array( getParam( 'aRotulo' ) )  ? implode(",", getParam( 'aRotulo' ) ): getParam( 'aRotulo' );
			$this->setTitle ( "Organizaciones" );
			$this->setSummary( "Esta tabla contiene las organizaciones" );
			$this->addColumnStar ( 'bEstrella', MODIFICAR_ESTRELLA_ORGANIZACION, 'ncOrganizacion', 'bEstrella' );
			$this->addColumnTag( 'ncRotulo', ACTUALIZAR_TAG_ORGANIZACION, 'ncOrganizacion', 'atOrganizacionRotulo', $this->oDatabase->getKeyArray('SELECT ncRotulo, cdRotulo FROM atRotuloOrganizacion' ) );
			$this->addColumn ( 'Codigo' , 'ncOrganizacion');
			$this->addColumn ( 'Depende' , '', 'ncOrganizacionPadre');
			$this->addColumn ( 'Organizacion', '', true );
			$this->addColumn ( 'EmailAreas' );
			$this->addColumn ( 'Email', 'cEmail' );
			$this->addColumnLink ( 'Web', 'cPaginaWeb', true );
			if ( $this->getOptionView() == 'L' )
			{
				// Inicializa los Tabs
				$this->setIndex( INDEX_ABC, TAB_BOTTOM );
				$this->aFields['cIndexABC'] = $this->getIndex(TAB_BOTTOM);
			}
			$this->setColumnAction ( 'Depende', VER_ORGANIZACION, 'ncOrganizacion:ncOrganizacionPadre');
		}
	function query()
		{
				$ncMiGrupo = obtenerMiGrupo();
			// Arma el Query
				$cSql = "SELECT Org.bEstrella, Org.ncOrganizacion, Org.cEmail, Org.cSigla, Org.cdOrganizacion, Org.cPaginaWeb, Org.nCuit, Nat.cdNaturalezaJuridica, Org.ncOrganizacionPadre
							FROM atOrganizacion as Org
							LEFT JOIN acNaturalezaJuridica as Nat
									On Org.ncNaturalezaJuridica = Nat.ncNaturalezaJuridica";
				$cSql .= armarJoin (" JOIN atOrganizacionActividad as OAc ON OAc.ncOrganizacion = Org.ncOrganizacion AND OAc.ncActividad = $ncActividad", $ncActividad);
			// Arma el Filtro de la Consulta
				$this->oWhere->addArray ( $this->oFiltro->getFilterdArray()  , 'Org');
				$this->oWhere->replace( 'Org.aRotulo', 'ERo.ncRotulo', '', 'atOrganizacionRotulo as ERo', 'ERo.ncOrganizacion = Org.ncOrganizacion');
				if ( $ncMiGrupo )
					$this->oWhere->addExpression ( "Org.ncVisibilidad", " (Org.ncVisibilidad <> " . VISIBILIDAD_PRIVADO . " OR Org.ncGrupo = $ncMiGrupo) " );
				else
					$this->oWhere->addExpression ( "Org.ncVisibilidad", " Org.ncVisibilidad = " . VISIBILIDAD_PUBLICO );
				$cdOrganizacion = $this->aFields[cdOrganizacion];
				$cIndexABC = $this->aFields[cIndexABC];
				//if ( $cdOrganizacion ) $this->oWhere->addExpression ( "cdOrganizacion", " cdOrganizacion LIKE '%$cdOrganizacion%' OR   cSigla LIKE '%$cdOrganizacion%'" );
				$this->oWhere->addKey ( $this->oDatabase->dbConcat( "' '", "cdOrganizacion", "' '", " ifnull(cSigla,'') " ), $this->aFields[cKeyLookUp] ); //
				//if ( $cIndexABC  ) $this->oWhere->addExpression ( "cdOrganizacion", " cdOrganizacion LIKE '$cIndexABC%' " );
				return $cSql . $this->oWhere->make();
		}
	function makeColumn ( $aRow, $cField )
		{
			switch( $cField )
			{
				case 'EmailAreas':
					$cSql = "SELECT cEmail FROM atOrganizacionArea WHERE cEmail IS NOT NULL AND ncOrganizacion= " . $aRow['ncOrganizacion'];
					$aEmail = $this->oDatabase->getArray($cSql, 0, 3);
					$cReturn = implode( "," , $aEmail ) ;
					break;
				case 'KeyLookUp':
					$cReturn = $aRow['ncOrganizacion'];
					break;
				case 'Depende':
					if ( $aRow['ncOrganizacionPadre'] )
					{
						list ( $cSigla, $cdOrganizacion ) = $this->oModule->oDatabase->getArray("SELECT cSigla, cdOrganizacion FROM atOrganizacion WHERE bBaja=0 AND  ncOrganizacion = " . $aRow['ncOrganizacionPadre']);
						$cReturn = $cSigla ? $cSigla: substr($cdOrganizacion, 0 , 10 );
					}
					break;
				case 'DescriptionLookUp':
					$cReturn =  ( $aRow['cSigla'] ) ? $aRow['cdOrganizacion'] . ' ( ' . $aRow['cSigla'] . ' )' : $aRow['cdOrganizacion'];
					break;
				case 'Organizacion':
					$cReturn =  ( $aRow['cSigla'] ) ? $aRow['cdOrganizacion'] . ' ( ' . $aRow['cSigla'] . ' )' : $aRow['cdOrganizacion'];
					$cReturn = $this->oModule->makeAction( $cReturn , VER_ORGANIZACION , "ncOrganizacion=" . $aRow['ncOrganizacion'] );
					break;
				break;
				default:
					return false;
				break;
			}
			return $cReturn;
		}
	function makeListActions()
		{
			$this->oModule->setBack();
			$this->addListAction ( AGREGAR_UNA_ORGANIZACION, '', 'I', VENTANA_SECUNDARIA );
		}
	function makeRowActions( $aRow )
		{
			$cParametroRegistro =  "ncOrganizacion=" . $aRow["ncOrganizacion"];
			$this->addRowAction ( MODIFICAR_UNA_ORGANIZACION, $cParametroRegistro, '', VENTANA_SECUNDARIA );
			$this->addRowAction ( ELIMINAR_UNA_ORGANIZACION, $cParametroRegistro);
		}
	function makeComplex()
		{
			/*
			$oLst = $this->oModule->loadClass ( "organizacion_area_lst" );
			$oLst->aFields['ncOrganizacion'] = $this->aFields['ncOrganizacion'];
			$oLst->open();
			if ( $oLst->oRecordset->count() > 0 )
			{
				$oLst->make( 'NNNRT' );
			}
			*/
			$oLst = $this->oModule->loadClass ( "organizacion_persona_lst" );
			$oLst->aFields['ncOrganizacion'] = $this->aFields['ncOrganizacion'];
			//$oLst->setNoPaging();
			$oLst->open();
			if ( $oLst->oRecordset->count() > 0 )
			{
				$oLst->make( 'NTNRD' );
			}
			// Domicilios
			$oLst = $this->oModule->loadClass ( "organizacion_domicilio_lst" );
			$oLst->aFields['ncOrganizacion'] = $this->aFields['ncOrganizacion'];
			$oLst->setNoPaging();
			$oLst->open();
			if ( $oLst->oRecordset->count() > 0 )
			{
				echo "<br/>";
				$oLst->make( 'NNNRD' );
			}
		}
	}
?>
